package ar.edu.utn.frsf.tpae.a2012.g03.impl;

import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;

import ar.edu.utn.frsf.tpae.a2012.g03.dao.CuentasDAO;
import ar.edu.utn.frsf.tpae.a2012.g03.dao.PagosDAO;
import ar.edu.utn.frsf.tpae.a2012.g03.logica.CuentaLogica;
import ar.edu.utn.frsf.tpae.a2012.g03.logica.PagoLogica;
import ar.edu.utn.frsf.tpae.a2012.g03.model.CajaAhorro;
import ar.edu.utn.frsf.tpae.a2012.g03.model.Cuenta;
import ar.edu.utn.frsf.tpae.a2012.g03.model.Movimiento;
import ar.edu.utn.frsf.tpae.a2012.g03.model.MovimientoPago;

public class PagoLogicaImpl implements PagoLogica{

	private PagosDAO pagosDao;

	// Setter utilizado por Spring.
	@Autowired(required = true)
	public void setCuentasDAO(PagosDAO pagosDao) {
	    this.pagosDao = pagosDao;
	  }
	
	@Override
	public int getCantidadPagos() {
		return pagosDao.getCantidadPagos();
	}

	@Override
	public void realizarPago(double importe, Cuenta unaCuenta, String comentario,String codigo) {
		double saldoRestante = unaCuenta.getCtaSdoAct() - importe;
		unaCuenta.setCtaSdoAct(saldoRestante);
		MovimientoPago movPago = new MovimientoPago(1,codigo,comentario);
		Movimiento pago = new Movimiento(1, new Date(), importe, movPago, unaCuenta);
		pago.getMovPag().setMov(pago);
		unaCuenta.getMovList().add(pago);
		pagosDao.realizarPago(unaCuenta);
	}

	@Override
	public void realizarPago(double importe, Cuenta unaCuenta) {
		double saldoRestante = unaCuenta.getCtaSdoAct() - importe;
		unaCuenta.setCtaSdoAct(saldoRestante);
		Movimiento pago = new Movimiento(2, new Date(), importe, unaCuenta);
		unaCuenta.getMovList().add(pago);
		pagosDao.realizarPago(unaCuenta);
	}

	@Override
	public int getCantidadMovPagos() {
		return pagosDao.getCantidadMovPagos();
	}

	
}
